package javase.CollectionAndMap.list;

import java.util.ArrayList;

/**
 * ArrayList 如何实现扩容？
 *
 * 1.无参构造方法创建集合对象
 * private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
 * this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
 * 2.第一次添加元素     list.add("111");
 * 将数组的容量赋值为10    private static final int DEFAULT_CAPACITY = 10;
 * ...
 * 3.第十一次添加元素   list.add("aaa");
 * 经过判断后，发现需要扩容
 * private void grow(int minCapacity)
 *      |
 * int newCapacity = oldCapacity + (oldCapacity >> 1);       15
 *      |
 * elementData = Arrays.copyOf(elementData, newCapacity);    扩容  + 拷贝旧数组中的数据
 */
public class ArrayListGrowDemo {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        list.add("555");
        list.add("666");
        list.add("777");
        list.add("888");
        list.add("999");
        list.add("000");
        list.add("aaa");
        System.out.println(list);
    }

}
